// (function(){
//   // 类型注解
//   // 布尔值
//   let bol :boolean = true
//   // bol = 1
//   bol = false
//   bol = undefined
//   bol = null
//   // 数字
//   let num :number
//   num = 1
//   // num = '1'
//   // num = true
//   num = undefined
//   num = null

//   // 字符串
//   let str :string = 'zhaoliying'
//   // str = 1
//   // str = true
//   str = undefined
//   str = null

//   // undefined
//   let und :undefined
//   // und = 1
//   // und = '1'
//   // und = true
//   und = undefined
//   und = null

//   // null
//   let nul:null = null
//   // nul = 1
//   // nul = '1'
//   // nul = true
//   nul = undefined

//   // undefined和null是所有类型的子类型
//   // 所有的类型都能赋值为null或者undefined 
//   // 但是undefined和null不能赋值为其它类型，他们两个可以互相赋值


//   // 数组
//   let arr :number[] = [1,2,3]
//   // arr[0] = '1'
//   arr[0] = 100

//   let arr1 :Array<string> = ['1','2']
//   // arr1[0] = 1
//   arr1[0] = 'yangmi'


//   // 元组
//   let tup :[number,string,boolean] = [1,'12',true]
//   // tup[0] = '1'
//   tup[1] = 'zhaoliying'
//   tup[0] = 100
//   tup[2] = false


//   // 枚举
//   // 1 综合
//   // 2 价格
//   // 3 销量
//   enum sortFlag {
//     zonghe = 1,
//     jiage = 100,
//     xiaoliang = 50
//   }

//   enum week{
//     周一 = 1,
//     周二,
//     周三,
//     周四,
//     周五,
//     周六,
//     周日,
//   }
//   console.log(sortFlag.jiage);
//   console.log(sortFlag[1]);
  

//   // 任意类型 any 后期几乎不用，除非逼不得已
//   let an :any
//   an = 1
//   an = '1'
//   an = false
//   an = [1,2,3]

//   // void
//   // 固定的代表函数没有返回值
//   function fn(a:string,b:string):void{
//     // return 1
//   }

//   // object代表非数字、字符串、布尔值的其余类型，后期对象类型用的都是确切的哪种对象
//   // 而不是这样直接使用object
//   let obj :object = {}


//   // 联合类型
//   let uni :number | string  = 1
//   uni = '1' 
//   // uni = true

//   // 类型推断
//   // 定义变量初始化数据，这个变量被推断为初始值的类型
//   // 定义变量未初始化数据，这个变量被推断为any类型
//   let a = 100
//   // a = '1'

//   let b
//   b = 1
//   b = '1'
//   b = [1,2,3]

//   // 类型断言
//   // <类型>变量 <string>x
//   // 变量 as 类型 x as string
//   function getLength(x: number | string) {
//     if ((<string>x).length) {
//       return (x as string).length    
//     } else {
//       return x.toString().length
//     }
//   }


//   // 重点
//   // 类型推断  类型断言  联合类型  


  




// })()

(function(){
  function fn(...arr:number[]){
    console.log(arguments);
    

  }
  fn(1,3,4)
})();